using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
using System.Data;

namespace SAD
{
    class GestorVoluntario
    {
        static private Conexion conexionBD = new Conexion();

        static private string GenerarID()
        {
            String consulta = "SELECT SUBSTRING(MAX(idVoluntario),4,9) FROM VOLUNTARIO";
            SqlDataReader dataReader = conexionBD.EjecutarReader(consulta);
            dataReader.Read();
            string aux = dataReader[0] + "";
            int r;
            if (aux == "") r = 1;
            else r = Convert.ToInt32(aux) + 1;

            string id = r.ToString();
            int nrodig = id.Length;

            for (int i = 1; i <= 9 - nrodig; i++)
                id = "0" + id;
            id = "VOL" + id;
            dataReader.Close();
            return id;
        }
        
        private static string convertirRol(string nombreRol){
            String consulta = "SELECT IDROL FROM ROL WHERE NOMBRE LIKE '%" + nombreRol + "%'";
            SqlDataReader dataReader = conexionBD.EjecutarReader(consulta);
            dataReader.Read();
            
            string aux = dataReader[0] + "";
            
            if (aux!= "") return aux;
            else return null;
            
        }
        
        private static string convertirEstado(string nombreEstado){
            String consulta = "SELECT IDESTADO FROM ESTADOVOLUNTARIO WHERE NOMBRE LIKE '%" + nombreEstado + "%'";
            SqlDataReader dataReader = conexionBD.EjecutarReader(consulta);
            dataReader.Read();
            
            string aux = dataReader[0] + "" ;
            
            if (aux!= "") return aux;
            else return null;
            
        }

        static public void RegistrarVoluntario(string nomb, string apell, string dni, string telf, string email, string idubic, string nombreRol, string nombreEstado)
        {
            /*
             * Atributos de voluntario
            private String idVoluntario;
            private String nombres;
            private String apellidos;
            private String dni;
            private String telefono;
            private String email;
            private String idUbicacion;
            private String idRol;
            private String idEstado;
             */
             
            string idrol = convertirRol(nombreRol);
            
            string idestado = convertirEstado(nombreEstado);

            string consulta = "";

            string nuevoid = GenerarID();

            if (dni != "")
            {
                if (idubic != "")
                {
                    if (apell != "")
                    {
                        consulta = "INSERT INTO VOLUNTARIO (IDVOLUNTARIO, NOMBRES, APELLIDOS, DNI, TELEFONO, EMAIL, IDUBICACION, IDROL, IDESTADO)" +
                                          "VALUES ( " + "\'" + @nuevoid + "\'" + "," + "\'" + @nomb + "\'" + "," + "\'" + @apell + "\'" + "," + "\'" + @dni + "\'" + ","
                                          + "\'" + @telf + "\'" + "," + "\'" + @email + "\'" + "," + "\'" + @idubic + "\'" + "," + "\'" + @idrol + "\'" + "," + @idestado + ")";
                    }

                    else consulta = "INSERT INTO VOLUNTARIO (IDVOLUNTARIO, NOMBRES, DNI, TELEFONO, EMAIL, IDUBICACION, IDROL, IDESTADO)" +
                                          "VALUES ( " + "\'" + @nuevoid + "\'" + "," + "\'" + @nomb + "\'" + "," + "\'" + @dni + "\'" + ","
                                          + "\'" + @telf + "\'" + "," + "\'" + @email + "\'" + "," + "\'" + @idubic + "\'" + "," + "\'" + @idrol + "\'" + "," + @idestado + ")";
                }
            }


            conexionBD.EjecutarComando(consulta);
            MessageBox.Show("Insert exitoso =)", "SAD aviso"); //Decidir sobre messageBox
        }


        static public Voluntario BuscarVoluntarioCodigo(string idVoluntario)
        {
            String consulta = "SELECT * FROM VOLUNTARIO WHERE idVoluntario = " + "\'" + @idVoluntario + "\'" + ";";
            SqlDataReader dataReader = conexionBD.EjecutarReader(consulta);
            while (dataReader.Read())
            {
                Voluntario voluntario = new Voluntario();
                //Donde se asigna la ocurrencia al objeto creado?
                return voluntario;
            }

            return null;
        }
    }
}
